/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: GaoBo
 * Date: 2021-04-10
 * Time: 8:44
 */
class Person {
    /**
     *     1、属性  成员变量
     *             1、普通成员变量
     *
     *     成员变量
     *
     *             2、静态成员变量
     *     成员变量如果没有初始化，那么他的值就是默认的0值
     *     如果是引用类型，默认值都为null
     *     如果是简单的类型,就是对应的0值
     */
    public String name;
    public int age;
    public String sex;
    public int count2 = 0;

    //方法区
    public static int count = 0;

    /**
     *     2、行为    成员方法
     *               1、普通成员方法
     *
     *     成员方法
     *
     *               2、静态成员方法
     */
    public void eat() {
        int a = 10;//局部变量
        System.out.println(name+" 吃饭！");
    }
    public void sleep() {
        //staticFunc();
        System.out.println(name+" 睡觉！");
    }

    //静态成员方法
    public static void staticFunc() {
        //sleep(); error
        count = 999;
        //name = "fsafsda"; error
        System.out.println("staticFunc()函数被调用了");
    }

    public void show() {
        System.out.println("姓名："+name+" 年龄："+age+" 性别："+sex);
    }

    //alt+insert(f12) ins
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}


public class TestDemo {

    public static void func() {
        System.out.println("fsafdsafa");
    }

    /**
     *
     * @param args
     */

    public static void main(String[] args) {
        func();
       /* TestDemo testDemo = new TestDemo();
        testDemo.func();
        */

    }

    public static void main8(String[] args) {
        Person per = null;
        //静态的 不依赖于对象  所以 调用静态的成员的时候  你不管是啥对象
        System.out.println(per.count);
        Person.staticFunc();
    }


    public static void main6(String[] args) {
        Person person1 = new Person();
        person1.count2++;
        System.out.println(person1.count2);//1

        Person person2 = new Person();
        person2.count2++;
        System.out.println(person2.count2);//1

        System.out.println("==========静态的只有1份，在方法区==========");
        //静态 成员变量 也叫做类变量
        // 他不依赖于对象 只需要通过类名就可以访问
        Person.count++;
        System.out.println(Person.count);//1
        Person.count++;
        System.out.println(Person.count);//2

    }


    public static void main5(String[] args) {
        /*Person per1 = null;
        System.out.println(per1.age);*/

        //Person per1 = new Person();
        //静态的成员变量或者 成员方法  都要通过  类名. 进行访问
        System.out.println(Person.count);
        Person.staticFunc();

    }


    public static void main4(String[] args) {
        /**
         * 可以通过一个类实例化多个对象
         *
         */
        Person per1 = new Person();
        per1.name = "caocao";
        per1.age = 18;
        per1.sex = "男";
        per1.show();
        System.out.println(per1);
        System.out.println("===============================");

        Person per2 = new Person();
        per2.name = "zhangsan";
        per2.age = 28;
        per2.sex = "男";
        per2.show();

        Person per3 = new Person();


        Person per4 = new Person();
    }


    public static void main2(String[] args) {
        /**
         * 实例化
         * 类名   变量  =  new 类名();
         * 调用普通方法和普通成员变量：
         *    引用.普通成员变量
         *    引用.普通成员方法
         *
         *
         */

        Person per = new Person();
        System.out.println(per.name);
        System.out.println(per.age);
        per.eat();
    }



    public static void main1(String[] args) {
        func();
       /* int[] array = {1,2,3,4,5};
        System.out.println(Arrays.toString(array));*/
    }
}
